home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / usr / share / pyshared / PIL / SunImagePlugin.py < prev    next >
Text File  |  2006-12-03  |  2KB  |  88 lines

  1. #
  2. # The Python Imaging Library.
  3. # $Id: SunImagePlugin.py 2134 2004-10-06 08:55:20Z fredrik $
  4. #
  5. # Sun image file handling
  6. #
  7. # History:
  8. # 1995-09-10 fl   Created
  9. # 1996-05-28 fl   Fixed 32-bit alignment
  10. # 1998-12-29 fl   Import ImagePalette module
  11. # 2001-12-18 fl   Fixed palette loading (from Jean-Claude Rimbault)
  12. #
  13. # Copyright (c) 1997-2001 by Secret Labs AB
  14. # Copyright (c) 1995-1996 by Fredrik Lundh
  15. #
  16. # See the README file for information on usage and redistribution.
  17. #
  18.  
  19.  
  20. __version__ = "0.3"
  21.  
  22.  
  23. import string
  24. import Image, ImageFile, ImagePalette
  25.  
  26.  
  27. def i16(c):
  28.     return ord(c[1]) + (ord(c[0])<<8)
  29.  
  30. def i32(c):
  31.     return ord(c[3]) + (ord(c[2])<<8) + (ord(c[1])<<16) + (ord(c[0])<<24)
  32.  
  33.  
  34. def _accept(prefix):
  35.     return i32(prefix) == 0x59a66a95
  36.  
  37. ##
  38. # Image plugin for Sun raster files.
  39.  
  40. class SunImageFile(ImageFile.ImageFile):
  41.  
  42.     format = "SUN"
  43.     format_description = "Sun Raster File"
  44.  
  45.     def _open(self):
  46.  
  47.         # HEAD
  48.         s = self.fp.read(32)
  49.         if i32(s) != 0x59a66a95:
  50.             raise SyntaxError, "not an SUN raster file"
  51.  
  52.         offset = 32
  53.  
  54.         self.size = i32(s[4:8]), i32(s[8:12])
  55.  
  56.         depth = i32(s[12:16])
  57.         if depth == 1:
  58.             self.mode, rawmode = "1", "1;I"
  59.         elif depth == 8:
  60.             self.mode = rawmode = "L"
  61.         elif depth == 24:
  62.             self.mode, rawmode = "RGB", "BGR"
  63.         else:
  64.             raise SyntaxError, "unsupported mode"
  65.  
  66.         compression = i32(s[20:24])
  67.  
  68.         if i32(s[24:28]) != 0:
  69.             length = i32(s[28:32])
  70.             offset = offset + length
  71.             self.palette = ImagePalette.raw("RGB;L", self.fp.read(length))
  72.             if self.mode == "L":
  73.                 self.mode = rawmode = "P"
  74.  
  75.         stride = (((self.size[0] * depth + 7) / 8) + 3) & (~3)
  76.  
  77.         if compression == 1:
  78.             self.tile = [("raw", (0,0)+self.size, offset, (rawmode, stride))]
  79.         elif compression == 2:
  80.             self.tile = [("sun_rle", (0,0)+self.size, offset, rawmode)]
  81.  
  82. #
  83. # registry
  84.  
  85. Image.register_open("SUN", SunImageFile, _accept)
  86.  
  87. Image.register_extension("SUN", ".ras")
  88.